package main

import (
	"encoding/json"
	"fmt"
	"os/exec"
)

func main() {
	//StdoutPipe 返回一个管道，该管道将在命令启动时连接到命令的标准输出。
	//
	//Wait 会在看到命令退出后关闭管道，所以大多数调用者不需要自己关闭管道。 因此，在管道的所有读取完成之前调用 Wait 是不正确的。 出于同样的原因，使用 StdoutPipe 时调用 Run 是不正确的。 有关惯用用法，请参见示例。

	cmd := exec.Command("echo", "-n", `{"Name": "Bob", "Age": 32}`)
	stdout, err := cmd.StdoutPipe()
	if err != nil {
		return
	}

	cmd.Start()
	var p person
	json.NewDecoder(stdout).Decode(&p)
	cmd.Wait()
	fmt.Printf("%s is %d years old\n", p.Name, p.Age)
}

type person struct {
	Name string
	Age  int
}
